package com.github.zengfr.project.stepchain;

import java.util.Map;
/**
 * @author zengfr QQ:362505707/1163551688 Email:zengfr3000@qq.com
 *         https://github.com/zengfr/stepchain-spring-boot-starter
 */
public interface IProcessorBuilder {
	<A,B,C> IProcessor<A,C> createProcessor(IProcessor<A, B> first, IProcessor<B, C> second);
	<I, O> IConditionLoopProcessor<I,O> createProcessor(IConditionValidator<I> validator, IProcessor<I, O> processor);
	<I,O> IConditionSelectorProcessor<I,Boolean,O> createProcessor(IConditionValidator<I> validator, IProcessor<I,O> first, IProcessor<I,O> second);
	<I,S,O> IConditionSelectorProcessor<I,S,O> createProcessor(IConditionSelector <I,S> selector);
	<I,S,O> IConditionSelectorProcessor<I,S,O> createProcessor(IConditionSelector <I,S> selector,Map<S, IProcessor<I, O>> branchs);
}
